# -*- coding: utf-8 -*-
# @Time    : 2021/4/29 22:19
# @Author  : Chen
# @Email   : 2356458272@qq.com
# @File    : 迭代器.py
# @Software: PyCharm
# 如何判断一个对象是可迭代对象，迭代器对象或生成器
# 导入from collections  import  Iterable
# print(isinstance(lst,Iterable))来判断是不是可迭代对象，迭代器也可以这样判断
# 一般含有yield关键字，或者小圆括号推导式得到的也是个生成器


# 迭代器与生成器的区别
# 生成器是一个特殊的迭代器，不需要手动实现__iter__和__next__方法

# 可迭代对象和迭代器的区别
# 迭代器是一个可迭代对象，可迭代对象没有使用__next__

# 如何定义一个生成器
# 用小圆括号，或者在函数内使用yield关键字

# 如何获取可迭代对象，迭代器与生成器中的数据
# 可迭代对象可用for循环获取
# 迭代器与生成器可用next()和for循环获取



# import string
# import random
# with open('big.txt', 'w+', encoding='utf-8') as f:
#     for i in range(1000):
#         f.write((''.join(random.choices(string.ascii_lowercase,k=random.randint(1,50)))+"\n"))

def func(path):
    with open(path,'r',encoding='utf-8') as f:
        while 1:
            a = f.readline()
            if f.readline():
                yield len(a)
            else:
                return
b = func('big.txt')
b =max(b)
print(b)